﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Helpers;
using BI.CF.BLL;
using BI.CF.Model;
using BI.CF.Common;

namespace BI.CF.Company.Controllers
{

    public class UpLoadController : Controller
    {
        
        PropertyBLL bll = new PropertyBLL();
        //
        // GET: /Upload/
        public ActionResult SetPhoto()
        {
           
            return View();
        }
        #region 上传头像
        //上传头像
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult ShangChuanEmpPhoto()
        {
            WebImage pic = GetImageFromRequest();
            int MaxWidth = 600;
            int MaxHeight = 400;
            int MinWidth = 100;
            int MinHeight = 100;
            if (pic != null)
            {
                string imageName = DateTime.Now.ToString("yyyyMMddHHmmfffff");
                string imageFormat = pic.ImageFormat;
                if (pic.Width > MaxWidth || pic.Height > MaxHeight) pic.Resize(MaxWidth, MaxHeight, true, true);
                if (pic.Width < MinWidth || pic.Height < MinHeight) pic.Resize(MinWidth, MinHeight, true, false);
                pic.Save(@"~\Content\Images\\Temp\\" + imageName);

                TouXiangInfo touxiang = new TouXiangInfo()
                {
                    w_full = pic.Width,
                    h_full = pic.Height,
                    tempfilename = imageName + "." + imageFormat
                };
                //UserrsModel Bmodel=Session["Bmodel"] as UserrsModel;
                //FileOperate.FileDel("/Content/images" + Bmodel.HeadImage);
                return Json(touxiang);
            }
            return Content("0");
        }
        public static WebImage GetImageFromRequest()
        {
            var request = System.Web.HttpContext.Current.Request;

            if (request.Files.Count == 0)
            {
                return null;
            }

            try
            {
                var postedFile = request.Files[0];
                var image = new WebImage(postedFile.InputStream)
                {
                    FileName = postedFile.FileName
                };
                return image;
            }
            catch
            {
                return null;
            }
        }
        //裁剪并保存头像
        [HttpPost]
        public ActionResult CaiJianEmpPhoto(string x1, string y1, string w, string h, string w_full, string h_full, string tempfilename)
        {
            WebImage pic = new WebImage(@"~\Content\Images\\Temp\\" + tempfilename);
            if (pic != null)
            {
                string imageName = DateTime.Now.ToString("yyyyMMddHHmmfffff");
                int intW = 0, intH = 0;
                if (h.IndexOf(".") != -1)
                {
                    float tmp = float.Parse(h);
                    intH = (int)tmp;
                }
                else
                    intH = int.Parse(h);

                if (w.IndexOf(".") != -1)
                {
                    float tmp = float.Parse(w);
                    intW = (int)tmp;
                }
                else
                    intW = int.Parse(w);

                pic.Crop(int.Parse(y1), int.Parse(x1), int.Parse(h_full) - (int.Parse(y1) + intH), int.Parse(w_full) - (int.Parse(x1) + intW));

                WebImage picTmp = pic;
                SaveTouXiang(picTmp, TouXiangDaXiao.Middle, imageName, "否");
                picTmp = pic;
                //SaveTouXiang(picTmp, TouXiangDaXiao.Big, imageName, "否");
                //picTmp = pic;
                //SaveTouXiang(picTmp, TouXiangDaXiao.Small, imageName, "否");
                //picTmp = pic;
                SaveTouXiang(picTmp, TouXiangDaXiao.Middle, imageName, "是");
                
                return Content("Small_" + imageName + ".png");
            }
            return Content("0");
        }

        public enum TouXiangDaXiao : int
        {
            Small = 50,
            Middle = 70,
            Big = 160,
        }

        [NonAction]
        public void SaveTouXiang(WebImage pic, TouXiangDaXiao size, string imageName, string ifMask)
        {
            int width = (int)size, height = (int)size;
            switch (size)
            {
                case TouXiangDaXiao.Middle:
                    if (ifMask == "是")
                    {
                        imageName = "Mask_" + imageName;
                        width = (int)size + 1;
                        height = (int)size + 61;
                    }
                    else
                    {
                        imageName = "Middle_" + imageName;
                        width = (int)size + 2;
                        height = (int)size + 62;
                        UserrsModel Umodel = Session["Umodel"] as UserrsModel;
                        bll.HeadImageUpdate(Umodel.UserId, "" + imageName + ".png");
                    }
                    break;
               
            }

            pic.Resize(width, height, true, false);
            if (ifMask == "是")
            {
                WebImage mask = new WebImage(@"~\Content\Images\blog-admin-mask.png");
                pic.AddImageWatermark(
                    mask,
                    width: (int)size,
                    height: (int)size,
                    horizontalAlign: "Left",
                    verticalAlign: "Top",
                    opacity: 100,
                    padding: 0
                );
            }
            if (ifMask == "是")
            pic.Crop(0, 0, 1, 1);
            else pic.Crop(1, 1, 1, 1);
            pic.Save(@"~\Content\Images\" + imageName, "png");
            
            
        }
        #endregion 上传头像
    }
    //上传图片
    public class TouXiangInfo
    {
        public int x1 { get; set; }
        public int y1 { get; set; }
        public int x2 { get; set; }
        public int y2 { get; set; }
        public int w { get; set; }
        public int h { get; set; }
        public int w_full { get; set; }
        public int h_full { get; set; }
        public string tempfilename { get; set; }
        public string savedfilename { get; set; }
    }
}
